﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class InsumoControlador
    {
        private static InsumoControlador instance;
        private Insumo i;

        private InsumoControlador()
        {
            

        }

        public static InsumoControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new InsumoControlador();
                }
                
                return instance;
            }
        }

        public bool ingresarInsumo(string nombre, decimal precio, out int codigo)
        {
            i = new Insumo();
            i.NombreInsumo=nombre;
            i.PrecioInsumo = precio;
            codigo = i.CodigoInsumo;
            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "INSERT INTO INSUMO" +
                    "(NOMBRE_INSUMO,PRECIO_INSUMO)" + "VALUES" +
                    "(@nombre_insumo, @precio_insumo)";

                com.Parameters.AddWithValue("@nombre_insumo", i.NombreInsumo);
                com.Parameters.AddWithValue("@precio_insumo",i.PrecioInsumo);
                
                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                   
                }
                Conexion.Instance.Con.Close();

                SqlCommand com2 = new SqlCommand("Select Max(CODIGO_INSUMO) from INSUMO");
                com2.Connection = Conexion.Instance.Con;
                SqlDataReader ej2 = com2.ExecuteReader();
                if (ej2.Read())
                {
                    i.CodigoInsumo = ej2.GetInt32(0);
                    codigo = i.CodigoInsumo;
                }
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }

        public bool modificarInsumo(int codigo, string nombre, decimal precio)
        {
            i.CodigoInsumo = codigo;
            i.NombreInsumo = nombre;
            i.PrecioInsumo = precio;
            try
            {
                SqlCommand com = new SqlCommand();
                
                
                com.CommandText = "UPDATE INSUMO " +
                   "SET NOMBRE_INSUMO = @nombre_insumo, PRECIO_INSUMO = @precio_insumo " +
                   "WHERE CODIGO_INSUMO = @codigo_insumo";

                com.Parameters.AddWithValue("@codigo_insumo", i.CodigoInsumo);
                com.Parameters.AddWithValue("@nombre_insumo", i.NombreInsumo);
                com.Parameters.AddWithValue("@precio_insumo", i.PrecioInsumo);

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }
        
        public bool eliminarInsumo(int CODIGO_INSUMO)
        {
            bool resultado = false;
            try
            {
                
                SqlCommand com = new SqlCommand("DELETE FROM INSUMO WHERE CODIGO_INSUMO = '" + CODIGO_INSUMO + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado = true;
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }
        }

        public Insumo buscarInsumo(int CODIGO_INSUMO)
        {
            i = new Insumo();

            try
            {

                SqlCommand com = new SqlCommand("SELECT * FROM INSUMO WHERE CODIGO_INSUMO = '" + CODIGO_INSUMO + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    i.CodigoInsumo = ejecutar.GetInt32(0);
                    i.NombreInsumo = ejecutar.GetString(1);
                    i.PrecioInsumo = ejecutar.GetDecimal(2);
                }
                else
                    i = null;
                Conexion.Instance.Con.Close();
                return i;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return null;
                throw;
            }
        }

    }
}
